package com.zzyl.service;

import com.zzyl.base.PageResponse;
import com.zzyl.dto.AlertRuleDto;
import com.zzyl.entity.AlertRule;
import com.zzyl.vo.AlertRuleVo;
import com.zzyl.vo.DeviceDataVo;

import java.util.List;

public interface AlertRuleService {
    /**
     * 新增规则
     *
     * @param alertRuleDto
     */
    void alertRuleCreate(AlertRuleDto alertRuleDto);

    /**
     * 分页查询规则
     *
     * @param pageNum
     * @param pageSize
     * @param alertRuleName
     * @param functionName
     * @param productKey
     * @return
     */
    PageResponse<AlertRuleVo> getPageAlertRule(Integer pageNum, Integer pageSize, String alertRuleName, String functionName, String productKey);

    /**
     * 获取单个告警规则
     *
     * @param id
     * @return
     */
    AlertRuleVo showAlertRuleById(Integer id);

    /**
     * 更新告警规则
     *
     * @param alertRuleDto
     */
    void updateAlertRuleById(AlertRuleDto alertRuleDto);

    /**
     * 启用-禁用
     *
     * @param id
     * @param status
     */
    void updateAlertRuleStatusById(Long id, Integer status);

    /**
     * 删除告警规则
     *
     * @param id
     */
    void deleteAlertRuleById(Long id);

    /**
     * 定时任务查询所有报警规则
     *
     * @param iotId
     * @param productKey
     * @param functionId
     * @return
     */
    List<AlertRule> showAlertRule(String iotId, String productKey, String functionId);

    /**
     * 遍历每条数据进行报警规则比较
     *
     * @param deviceDataVo
     */
    void alertFilter(DeviceDataVo deviceDataVo);
}
